summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2014-04-12 20:37:55 +0200
committerTrygve Laugstøl <trygvis@inamo.no>2014-04-12 20:37:55 +0200
commita521a2d74c480c53c1004e7e5e2addd28a0578f4 (patch)
treef6d36cdecb56bc35f18faf496c8251a14f3f3a26
parentbfcfcf5e3b4301bc94c27f47bfda61693edf3595 (diff)
downloadcalamus-a521a2d74c480c53c1004e7e5e2addd28a0578f4.tar.gz
calamus-a521a2d74c480c53c1004e7e5e2addd28a0578f4.tar.bz2
calamus-a521a2d74c480c53c1004e7e5e2addd28a0578f4.tar.xz
calamus-a521a2d74c480c53c1004e7e5e2addd28a0578f4.zip
wip
-rwxr-xr-x.gitignore3
-rwxr-xr-xcalamus-engine/pom.xml40
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/CalamusJbpm.java50
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/JenkinsBuildResultMessageListener.java53
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/Main.java19
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/MqClient.java41
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java58
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/domain/AbstractEntity.java19
-rw-r--r--calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java48
-rw-r--r--calamus-engine/src/main/resources/META-INF/persistence.xml4
-rw-r--r--calamus-engine/src/main/resources/db/public/V001_000__jbpm.sql (renamed from calamus-engine/src/main/resources/db/postgresql-jbpm-schema.sql)3
-rw-r--r--calamus-engine/src/main/resources/db/public/V001_001__baseline.sql14
-rw-r--r--calamus-engine/src/main/resources/logback.xml11
-rw-r--r--calamus-jenkins-plugin/src/main/java/org/jenkinsci/plugins/calamus/MqClient.java19
-rw-r--r--calamus-nexus-plugin/pom.xml45
-rw-r--r--calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusEventListener.java (renamed from calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/EventListener.java)19
-rw-r--r--calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusNexusPlugin.java14
-rw-r--r--calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusUiContributor.java2
-rw-r--r--calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/MqClient.java35
-rw-r--r--calamus-nexus-plugin/src/main/resources/static/js/Calamus/CalamusConfigPanel.js3
-rw-r--r--calamus-nexus-plugin/src/main/resources/static/js/calamus-nexus-plugin-boot.js3
-rw-r--r--pom.xml11
22 files changed, 388 insertions, 126 deletions
diff --git a/.gitignore b/.gitignore
index b64e034..2725f23 100755
--- a/.gitignore
+++ b/.gitignore
@@ -7,7 +7,4 @@ target
.project
.settings
-etc/config.properties
-
*tmp*
-
diff --git a/calamus-engine/pom.xml b/calamus-engine/pom.xml
index 4923295..98ad6bf 100755
--- a/calamus-engine/pom.xml
+++ b/calamus-engine/pom.xml
@@ -13,6 +13,7 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<version.activemq>5.9.1</version.activemq>
+ <version.flyway>2.2.1</version.flyway>
<hibernate.version>4.2.11.Final</hibernate.version>
<slf4j.version>1.7.4</slf4j.version>
@@ -143,6 +144,11 @@
<scope>test</scope>
</dependency>
-->
+ <dependency>
+ <groupId>com.googlecode.flyway</groupId>
+ <artifactId>flyway-core</artifactId>
+ <version>${version.flyway}</version>
+ </dependency>
<dependency>
<groupId>org.apache.activemq</groupId>
@@ -340,23 +346,23 @@
</dependency>
</dependencies>
-<!--
- <repositories>
- <repository>
- <id>jboss-public-repository-group</id>
- <name>JBoss Public Repository Group</name>
- <url>http://repository.jboss.org/nexus/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- <updatePolicy>never</updatePolicy>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- </snapshots>
- </repository>
- </repositories>
--->
+ <!--
+ <repositories>
+ <repository>
+ <id>jboss-public-repository-group</id>
+ <name>JBoss Public Repository Group</name>
+ <url>http://repository.jboss.org/nexus/content/groups/public/</url>
+ <releases>
+ <enabled>true</enabled>
+ <updatePolicy>never</updatePolicy>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ <updatePolicy>daily</updatePolicy>
+ </snapshots>
+ </repository>
+ </repositories>
+ -->
<build>
<plugins>
<plugin>
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/CalamusJbpm.java b/calamus-engine/src/main/java/io/trygvis/engine/CalamusJbpm.java
index 0a7be62..cc2ff41 100644
--- a/calamus-engine/src/main/java/io/trygvis/engine/CalamusJbpm.java
+++ b/calamus-engine/src/main/java/io/trygvis/engine/CalamusJbpm.java
@@ -2,6 +2,9 @@ package io.trygvis.engine;
import bitronix.tm.TransactionManagerServices;
import bitronix.tm.resource.jdbc.PoolingDataSource;
+import com.googlecode.flyway.core.Flyway;
+import com.googlecode.flyway.core.api.MigrationInfo;
+import com.googlecode.flyway.core.api.MigrationInfoService;
import org.jbpm.bpmn2.handler.ServiceTaskHandler;
import org.jbpm.process.audit.AuditLoggerFactory;
import org.kie.api.KieBase;
@@ -13,11 +16,21 @@ import org.kie.internal.io.ResourceFactory;
import org.kie.internal.persistence.jpa.JPAKnowledgeService;
import org.kie.internal.runtime.StatefulKnowledgeSession;
import org.kie.internal.utils.KieHelper;
+import org.slf4j.Logger;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
+import javax.sql.DataSource;
+import java.util.Date;
+
+import static java.lang.String.format;
+import static org.slf4j.LoggerFactory.getLogger;
public class CalamusJbpm {
+ private final Logger log = getLogger(getClass());
+
+ private final EntityManagerFactory emf;
+
private final StatefulKnowledgeSession session;
public static enum CalamusProcess {
@@ -42,7 +55,9 @@ public class CalamusJbpm {
ds.getDriverProperties().put("driverClassName", org.postgresql.Driver.class.getCanonicalName());
ds.init();
- EntityManagerFactory emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
+ runFlyway(log, ds, "", "public");
+
+ emf = Persistence.createEntityManagerFactory("org.jbpm.persistence.jpa");
Environment env = KnowledgeBaseFactory.newEnvironment();
env.set(EnvironmentName.ENTITY_MANAGER_FACTORY, emf);
env.set(EnvironmentName.TRANSACTION_MANAGER, TransactionManagerServices.getTransactionManager());
@@ -63,7 +78,40 @@ public class CalamusJbpm {
return session;
}
+ public EntityManagerFactory getEntityManagerFactory() {
+ return emf;
+ }
+
public void startProcess(CalamusProcess process) {
ProcessInstance processInstance = session.startProcess(process.name);
}
+
+ private static void runFlyway(Logger log, DataSource dataSource, String prefix, String schema) {
+ log.info("Running migrations for {}", schema);
+
+ Flyway flyway = new Flyway();
+ flyway.setDataSource(dataSource);
+ flyway.setSchemas(schema);
+ flyway.setLocations("db/" + prefix);
+ flyway.setInitOnMigrate(true);
+ MigrationInfoService info = flyway.info();
+ log.info(format("%-15s %-10s %-19s %s", "Version", "State", "Installed on", "Description"));
+ for (MigrationInfo mi : info.all()) {
+ Date installedOn = mi.getInstalledOn();
+ log.info(format("%-15s %-10s %-19s %s",
+ mi.getVersion(),
+ trimToEmpty(mi.getState().getDisplayName()),
+ installedOn != null ? new Date(installedOn.getTime()).toString() : "",
+ trimToEmpty(mi.getDescription())));
+ }
+ flyway.migrate();
+ }
+
+ private static String trimToEmpty(String string) {
+ if (string == null) {
+ return "";
+ }
+
+ return string.trim();
+ }
}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/JenkinsBuildResultMessageListener.java b/calamus-engine/src/main/java/io/trygvis/engine/JenkinsBuildResultMessageListener.java
new file mode 100644
index 0000000..08b5e5b
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/engine/JenkinsBuildResultMessageListener.java
@@ -0,0 +1,53 @@
+package io.trygvis.engine;
+
+import org.kie.internal.runtime.StatefulKnowledgeSession;
+import org.slf4j.Logger;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Properties;
+
+import static java.lang.Integer.parseInt;
+import static org.slf4j.LoggerFactory.getLogger;
+
+public class JenkinsBuildResultMessageListener implements MessageListener {
+ private final Logger log = getLogger(getClass());
+
+ private StatefulKnowledgeSession session;
+
+ public JenkinsBuildResultMessageListener(StatefulKnowledgeSession session) {
+ this.session = session;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ if (!(message instanceof TextMessage)) {
+ return;
+ }
+
+ try {
+ TextMessage m = (TextMessage) message;
+ Properties p = new Properties();
+ p.load(new StringReader(m.getText()));
+
+ String jobName = p.getProperty("jobName");
+ int buildNumber = parseInt(p.getProperty("buildNumber"));
+ String result = p.getProperty("result");
+
+ log.info("New build: jobName={}, buildNumber={}, result={}", jobName, buildNumber, result);
+
+ /*
+ String type;
+ Object event;
+ long processInstanceId;
+ jbpm.signalEvent(type, event, processInstanceId);
+ */
+ } catch (JMSException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/Main.java b/calamus-engine/src/main/java/io/trygvis/engine/Main.java
index bc322e8..f5bfb8a 100644
--- a/calamus-engine/src/main/java/io/trygvis/engine/Main.java
+++ b/calamus-engine/src/main/java/io/trygvis/engine/Main.java
@@ -1,13 +1,22 @@
package io.trygvis.engine;
-import static io.trygvis.engine.CalamusJbpm.CalamusProcess.DEPLOY;
+import org.kie.internal.runtime.StatefulKnowledgeSession;
public class Main {
- public static void main(String[] args) {
- CalamusJbpm jbpm = new CalamusJbpm();
+ public static void main(String[] args) throws Exception {
- MqClient mqClient = new MqClient(jbpm.getSession(), "tcp://localhost:61616");
+ CalamusJbpm calamus = new CalamusJbpm();
- jbpm.startProcess(DEPLOY);
+ String brokerUrl = "tcp://localhost:61616";
+
+ StatefulKnowledgeSession session = calamus.getSession();
+
+ try (MqClient buildResultClient = new MqClient(brokerUrl, "jenkins.build-result", new JenkinsBuildResultMessageListener(session));
+ MqClient newDeployClient = new MqClient(brokerUrl, "nexus.new-artifact", new NexusNewArtifactMessageListener(session))) {
+
+ while (true) {
+ Thread.sleep(1000);
+ }
+ }
}
}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java b/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java
index b609c9f..91eec37 100644
--- a/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java
+++ b/calamus-engine/src/main/java/io/trygvis/engine/MqClient.java
@@ -6,23 +6,24 @@ import org.kie.internal.runtime.StatefulKnowledgeSession;
import javax.jms.Connection;
import javax.jms.Destination;
import javax.jms.JMSException;
-import javax.jms.MapMessage;
import javax.jms.Message;
import javax.jms.MessageConsumer;
import javax.jms.MessageListener;
import javax.jms.Session;
+import javax.jms.TextMessage;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Properties;
+import static java.lang.Integer.parseInt;
import static javax.jms.Session.AUTO_ACKNOWLEDGE;
public class MqClient implements AutoCloseable {
private Connection connection;
-// private final ActiveMQConnectionFactory connectionFactory;
-// private final StatefulKnowledgeSession jbpm;
- public MqClient(final StatefulKnowledgeSession jbpm, String brukerUrl) {
-// this.jbpm = jbpm;
- ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brukerUrl);
+ public MqClient(String brokerUrl, String queueName, MessageListener messageListener) {
+ ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
try {
connection = connectionFactory.createConnection();
@@ -30,34 +31,10 @@ public class MqClient implements AutoCloseable {
Session session = connection.createSession(false, AUTO_ACKNOWLEDGE);
- Destination destination = session.createQueue("jenkins.build-result");
+ Destination destination = session.createQueue(queueName);
MessageConsumer consumer = session.createConsumer(destination);
- consumer.setMessageListener(new MessageListener() {
- @Override
- public void onMessage(Message message) {
- if (!(message instanceof MapMessage)) {
- return;
- }
-
- MapMessage m = (MapMessage) message;
-
- try {
- String jobName = m.getString("jobName");
- int buildNumber = m.getInt("buildNumber");
- String result = m.getString("result");
-
-/*
- String type;
- Object event;
- long processInstanceId;
- jbpm.signalEvent(type, event, processInstanceId);
-*/
- } catch (JMSException e) {
- e.printStackTrace();
- }
- }
- });
+ consumer.setMessageListener(messageListener);
} catch (JMSException e) {
e.printStackTrace();
}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java b/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java
new file mode 100644
index 0000000..f3f9f05
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/engine/NexusNewArtifactMessageListener.java
@@ -0,0 +1,58 @@
+package io.trygvis.engine;
+
+import org.kie.internal.runtime.StatefulKnowledgeSession;
+import org.slf4j.Logger;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.Properties;
+
+import static org.slf4j.LoggerFactory.getLogger;
+
+public class NexusNewArtifactMessageListener implements MessageListener {
+ private final Logger log = getLogger(getClass());
+
+ private final StatefulKnowledgeSession session;
+
+ public NexusNewArtifactMessageListener(StatefulKnowledgeSession session) {
+ this.session = session;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ System.out.println("NexusNewArtifactMessageListener.onMessage");
+
+ System.out.println("message.getClass() = " + message.getClass());
+ if (!(message instanceof TextMessage)) {
+ return;
+ }
+
+ try {
+ TextMessage m = (TextMessage) message;
+ Properties p = new Properties();
+ p.load(new StringReader(m.getText()));
+
+ String repository = p.getProperty("repository");
+ String groupId = p.getProperty("groupId");
+ String artifactId = p.getProperty("artifactId");
+ String version = p.getProperty("version");
+ String classifier = p.getProperty("classifier");
+ String extension = p.getProperty("extension");
+
+ log.info("New artifact: groupId={}, artifactId={}, version={}, classifier={}, extension={}", groupId, artifactId, version, classifier, extension);
+
+ /*
+ String type;
+ Object event;
+ long processInstanceId;
+ jbpm.signalEvent(type, event, processInstanceId);
+ */
+ } catch (JMSException | IOException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/domain/AbstractEntity.java b/calamus-engine/src/main/java/io/trygvis/engine/domain/AbstractEntity.java
new file mode 100644
index 0000000..f1357b4
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/engine/domain/AbstractEntity.java
@@ -0,0 +1,19 @@
+package io.trygvis.engine.domain;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.SequenceGenerator;
+
+@Entity
+@SequenceGenerator(name = "calamusSeq", sequenceName = "calamus_seq")
+public abstract class AbstractEntity {
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO, generator = "calamusSeq")
+ private Long id;
+
+ public Long getId() {
+ return id;
+ }
+}
diff --git a/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java b/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java
new file mode 100644
index 0000000..922376b
--- /dev/null
+++ b/calamus-engine/src/main/java/io/trygvis/engine/domain/Artifact.java
@@ -0,0 +1,48 @@
+package io.trygvis.engine.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import java.util.Optional;
+
+import static java.util.Optional.ofNullable;
+
+@Entity
+public class Artifact extends AbstractEntity {
+ @Column(length = 100, nullable = false)
+ private String groupId;
+
+ @Column(length = 100, nullable = false)
+ private String artifactId;
+
+ @Column(length = 100, nullable = false)
+ private String version;
+
+ @Column(length = 100)
+ private String classifier;
+
+ @Column(length = 100, nullable = false)
+ private String extension;
+
+ public String getGroupId() {
+ return groupId;
+ }
+
+ public String getArtifactId() {
+ return artifactId;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public Optional<String> getClassifier() {
+ return ofNullable(classifier);
+ }
+
+ public String getExtension() {
+ return extension;
+ }
+}
diff --git a/calamus-engine/src/main/resources/META-INF/persistence.xml b/calamus-engine/src/main/resources/META-INF/persistence.xml
index a8a11af..5591390 100644
--- a/calamus-engine/src/main/resources/META-INF/persistence.xml
+++ b/calamus-engine/src/main/resources/META-INF/persistence.xml
@@ -16,14 +16,12 @@
<class>org.jbpm.process.audit.NodeInstanceLog</class>
<class>org.jbpm.process.audit.VariableInstanceLog</class>
<class>org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo</class>
+ <class>io.trygvis.engine.domain.Artifact</class>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL82Dialect"/>
<property name="hibernate.max_fetch_depth" value="3"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.show_sql" value="true"/>
- <!--
- <property name="hibernate.jdbc.use_streams_for_binary" value="true"/>
- -->
<property name="hibernate.transaction.jta.platform"
value="org.hibernate.service.jta.platform.internal.BitronixJtaPlatform"/>
</properties>
diff --git a/calamus-engine/src/main/resources/db/postgresql-jbpm-schema.sql b/calamus-engine/src/main/resources/db/public/V001_000__jbpm.sql
index e13e6fb..4d2a194 100644
--- a/calamus-engine/src/main/resources/db/postgresql-jbpm-schema.sql
+++ b/calamus-engine/src/main/resources/db/public/V001_000__jbpm.sql
@@ -1,3 +1,6 @@
+DROP SCHEMA public CASCADE;
+CREATE SCHEMA public;
+
CREATE TABLE Attachment (
AttachmentId INT8 NOT NULL,
accessType INT4,
diff --git a/calamus-engine/src/main/resources/db/public/V001_001__baseline.sql b/calamus-engine/src/main/resources/db/public/V001_001__baseline.sql
new file mode 100644
index 0000000..b1e7a02
--- /dev/null
+++ b/calamus-engine/src/main/resources/db/public/V001_001__baseline.sql
@@ -0,0 +1,14 @@
+DROP SEQUENCE IF EXISTS calamus_seq;
+CREATE SEQUENCE calamus_seq;
+
+DROP TABLE IF EXISTS artifact;
+CREATE TABLE artifact (
+ id BIGINT NOT NULL PRIMARY KEY,
+ group_id VARCHAR(100) NOT NULL,
+ artifact_id VARCHAR(100) NOT NULL,
+ version VARCHAR(100) NOT NULL,
+ classifier VARCHAR(100),
+ extension VARCHAR(100) NOT NULL,
+ git_hash CHAR(40) NOT NULL,
+ level VARCHAR(100) NOT NULL
+);
diff --git a/calamus-engine/src/main/resources/logback.xml b/calamus-engine/src/main/resources/logback.xml
new file mode 100644
index 0000000..d054893
--- /dev/null
+++ b/calamus-engine/src/main/resources/logback.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="false">
+ <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
+ </encoder>
+ </appender>
+ <root level="INFO">
+ <appender-ref ref="CONSOLE"/>
+ </root>
+</configuration>
diff --git a/calamus-jenkins-plugin/src/main/java/org/jenkinsci/plugins/calamus/MqClient.java b/calamus-jenkins-plugin/src/main/java/org/jenkinsci/plugins/calamus/MqClient.java
index 6ca4264..01e4176 100644
--- a/calamus-jenkins-plugin/src/main/java/org/jenkinsci/plugins/calamus/MqClient.java
+++ b/calamus-jenkins-plugin/src/main/java/org/jenkinsci/plugins/calamus/MqClient.java
@@ -6,10 +6,13 @@ import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
-import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.util.Properties;
+import static java.lang.String.valueOf;
import static javax.jms.Session.AUTO_ACKNOWLEDGE;
public class MqClient {
@@ -32,16 +35,18 @@ public class MqClient {
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- MapMessage message = session.createMapMessage();
- message.setString("jobName", jobName);
- message.setInt("buildNumber", buildNumber);
- message.setString("result", result);
+ Properties properties = new Properties();
+ properties.setProperty("jobName", jobName);
+ properties.setProperty("buildNumber", valueOf(buildNumber));
+ properties.setProperty("result", result);
- producer.send(message);
+ CharArrayWriter buf = new CharArrayWriter();
+ properties.store(buf, null);
+ producer.send(session.createTextMessage(buf.toString()));
session.close();
connection.close();
- } catch (JMSException e) {
+ } catch (JMSException | IOException e) {
e.printStackTrace();
}
}
diff --git a/calamus-nexus-plugin/pom.xml b/calamus-nexus-plugin/pom.xml
index 5060827..464daa6 100644
--- a/calamus-nexus-plugin/pom.xml
+++ b/calamus-nexus-plugin/pom.xml
@@ -1,21 +1,26 @@
-<project>
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+
<modelVersion>4.0.0</modelVersion>
+
<parent>
- <groupId>io.trygvis.calamus</groupId>
- <artifactId>calamus</artifactId>
+ <groupId>org.sonatype.nexus.examples</groupId>
+ <artifactId>nexus-examples</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
+
+ <groupId>io.trygvis.calamus</groupId>
<artifactId>calamus-nexus-plugin</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
<name>${project.groupId}:${project.artifactId}</name>
- <packaging>${nexus-plugin.type}</packaging>
+ <packaging>nexus-plugin</packaging>
<properties>
<version.activemq>5.9.1</version.activemq>
<version.nexus>2.8.0-01</version.nexus>
- <!--
- Support for loading Nexus projects in Intellij IDEA; as it doesn't handle the 'nexus-plugin' packaging WRT to dependency calculations.
- -->
- <nexus-plugin.type>nexus-plugin</nexus-plugin.type>
</properties>
+
<dependencies>
<dependency>
<groupId>org.apache.activemq</groupId>
@@ -27,24 +32,18 @@
<artifactId>activemq-pool</artifactId>
<version>${version.activemq}</version>
</dependency>
- <dependency>
- <groupId>org.sonatype.nexus</groupId>
- <artifactId>nexus-plugin-api</artifactId>
- <version>${version.nexus}</version>
- <scope>provided</scope>
- </dependency>
+ <!--
<dependency>
<groupId>org.sonatype.nexus.plugins</groupId>
- <artifactId>nexus-restlet1x-plugin</artifactId>
+ <artifactId>nexus-ui-extjs3-plugin</artifactId>
<version>${version.nexus}</version>
- <!--<type>${nexus-plugin.type}</type>-->
<scope>provided</scope>
</dependency>
+ -->
<dependency>
- <groupId>org.sonatype.nexus.plugins</groupId>
- <artifactId>nexus-ui-extjs3-plugin</artifactId>
+ <groupId>org.sonatype.nexus</groupId>
+ <artifactId>nexus-plugin-api</artifactId>
<version>${version.nexus}</version>
- <!--<type>jar</type>-->
<scope>provided</scope>
</dependency>
<dependency>
@@ -64,12 +63,4 @@
</plugin>
</plugins>
</build>
- <profiles>
- <profile>
- <id>idea</id>
- <properties>
- <nexus-plugin.type>jar</nexus-plugin.type>
- </properties>
- </profile>
- </profiles>
</project>
diff --git a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/EventListener.java b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusEventListener.java
index 4770974..ddfd171 100644
--- a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/EventListener.java
+++ b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusEventListener.java
@@ -14,8 +14,8 @@ import javax.inject.Singleton;
import static org.slf4j.LoggerFactory.getLogger;
@Singleton
-@Named
-public class EventListener implements EventSubscriber {
+@Named("CalamusEventListener")
+public class CalamusEventListener implements EventSubscriber {
private final Logger log = getLogger(getClass());
@@ -23,8 +23,8 @@ public class EventListener implements EventSubscriber {
private final GavCalculator gavCalculator;
@Inject
- public EventListener(CalamusConfig config, @Named("maven2") GavCalculator gavCalculator) {
- log.info("CalamusNexusPlugin.CalamusNexusPlugin");
+ public CalamusEventListener(CalamusConfig config, @Named("maven2") GavCalculator gavCalculator) {
+ log.info("CalamusEventListener.CalamusEventListener");
log.info("gavCalculator = " + gavCalculator);
this.mqClient = new MqClient(config.getBrokerUrl());
@@ -33,19 +33,20 @@ public class EventListener implements EventSubscriber {
@Subscribe
public void onRepositoryItemEventStoreCreate(RepositoryItemEventStoreCreate event) {
+ log.info("EventListener.onRepositoryItemEventStoreCreate");
+
Gav gav = gavCalculator.pathToGav(event.getItem().getPath());
- if (gav == null) {
+ if (gav == null || gav.isHash() || gav.isSignature()) {
return;
}
String groupId = gav.getGroupId();
String artifactId = gav.getArtifactId();
String version = gav.getVersion();
- String type = gav.getExtension();
+ String extension = gav.getExtension();
String classifier = gav.getClassifier();
- mqClient.sendMessage(event.getRepository().getId(), groupId, artifactId, version, type, classifier);
-
- log.info("New artifact: groupId={}, artifactId={}, version={}, type={}, classifier={}", groupId, artifactId, version, type, classifier);
+ log.info("New artifact: groupId={}, artifactId={}, version={}, classifier={}, extension={}", groupId, artifactId, version, classifier, extension);
+ mqClient.sendMessage(event.getRepository().getId(), groupId, artifactId, version, classifier, extension);
}
}
diff --git a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusNexusPlugin.java b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusNexusPlugin.java
index e60fed7..96d2c1d 100644
--- a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusNexusPlugin.java
+++ b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusNexusPlugin.java
@@ -1,17 +1,25 @@
package io.trygvis.calamus.nexus;
-import org.eclipse.sisu.EagerSingleton;
+//import org.eclipse.sisu.EagerSingleton;
+
+import org.slf4j.Logger;
import org.sonatype.nexus.plugin.PluginIdentity;
import javax.inject.Inject;
import javax.inject.Named;
-@EagerSingleton
-@Named("calamus")
+import static org.slf4j.LoggerFactory.getLogger;
+
+@Named
+//@EagerSingleton
public class CalamusNexusPlugin extends PluginIdentity {
+ private final Logger log = getLogger(getClass());
+
@Inject
public CalamusNexusPlugin() throws Exception {
super("io.trygvis.calamus", "calamus-nexus-plugin");
+
+ System.out.println("CalamusNexusPlugin.CalamusNexusPlugin");
}
}
diff --git a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusUiContributor.java b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusUiContributor.java
index ed2f745..18e1c68 100644
--- a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusUiContributor.java
+++ b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/CalamusUiContributor.java
@@ -1,10 +1,12 @@
package io.trygvis.calamus.nexus;
+/*
import org.sonatype.nexus.plugins.ui.contribution.UiContributorSupport;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
+*/
//@Named
//@Singleton
diff --git a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/MqClient.java b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/MqClient.java
index 51b2b3a..2564ed9 100644
--- a/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/MqClient.java
+++ b/calamus-nexus-plugin/src/main/java/io/trygvis/calamus/nexus/MqClient.java
@@ -1,26 +1,33 @@
package io.trygvis.calamus.nexus;
import org.apache.activemq.ActiveMQConnectionFactory;
+import org.slf4j.Logger;
import javax.jms.Connection;
import javax.jms.DeliveryMode;
import javax.jms.Destination;
import javax.jms.JMSException;
-import javax.jms.MapMessage;
import javax.jms.MessageProducer;
import javax.jms.Session;
+import java.io.CharArrayWriter;
+import java.io.IOException;
+import java.util.Properties;
import static javax.jms.Session.AUTO_ACKNOWLEDGE;
+import static org.apache.commons.lang.StringUtils.trimToEmpty;
+import static org.slf4j.LoggerFactory.getLogger;
public class MqClient {
- ActiveMQConnectionFactory connectionFactory;
+ private final Logger log = getLogger(getClass());
+
+ private final ActiveMQConnectionFactory connectionFactory;
public MqClient(String brokerUrl) {
this.connectionFactory = new ActiveMQConnectionFactory(brokerUrl);
}
- public void sendMessage(String repository, String groupId, String artifactId, String version, String type, String classifier) {
+ public void sendMessage(String repository, String groupId, String artifactId, String version, String classifier, String extension) {
try {
Connection connection = connectionFactory.createConnection();
connection.start();
@@ -32,20 +39,22 @@ public class MqClient {
MessageProducer producer = session.createProducer(destination);
producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
- MapMessage message = session.createMapMessage();
- message.setString("repository", repository);
- message.setString("groupId", groupId);
- message.setString("artifactId", artifactId);
- message.setString("version", version);
- message.setString("type", type);
- message.setString("classifier", classifier);
+ Properties p = new Properties();
+ p.setProperty("repository", repository);
+ p.setProperty("groupId", groupId);
+ p.setProperty("artifactId", artifactId);
+ p.setProperty("version", version);
+ p.setProperty("classifier", trimToEmpty(classifier));
+ p.setProperty("extension", extension);
- producer.send(message);
+ CharArrayWriter buf = new CharArrayWriter();
+ p.store(buf, null);
+ producer.send(session.createTextMessage(buf.toString()));
session.close();
connection.close();
- } catch (JMSException e) {
- e.printStackTrace();
+ } catch (JMSException | IOException e) {
+ log.warn("Unable to send message to broker", e);
}
}
}
diff --git a/calamus-nexus-plugin/src/main/resources/static/js/Calamus/CalamusConfigPanel.js b/calamus-nexus-plugin/src/main/resources/static/js/Calamus/CalamusConfigPanel.js
deleted file mode 100644
index 81a7887..0000000
--- a/calamus-nexus-plugin/src/main/resources/static/js/Calamus/CalamusConfigPanel.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define('Sonatype/repoServer/LdapConfigPanel', function () {
-
-});
diff --git a/calamus-nexus-plugin/src/main/resources/static/js/calamus-nexus-plugin-boot.js b/calamus-nexus-plugin/src/main/resources/static/js/calamus-nexus-plugin-boot.js
deleted file mode 100644
index 0c454be..0000000
--- a/calamus-nexus-plugin/src/main/resources/static/js/calamus-nexus-plugin-boot.js
+++ /dev/null
@@ -1,3 +0,0 @@
-define('calamus-nexus-plugin', [
- 'Calamus/CalamusConfigPanel'
-]);
diff --git a/pom.xml b/pom.xml
index 128f850..d8cad9e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,4 +20,15 @@
<module>calamus-jenkins-plugin</module>
<module>calamus-nexus-plugin</module>
</modules>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>${maven.compiler.source}</source>
+ <target>${maven.compiler.target}</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
</project>