DATAGRAPH-228 update examples to neo4j 1.7-SNAPSHOT
This commit is contained in:
1
pom.xml
1
pom.xml
@@ -13,6 +13,7 @@
|
||||
<module>spring-data-neo4j-parent</module>
|
||||
<module>spring-data-neo4j</module>
|
||||
<module>spring-data-neo4j-rest</module>
|
||||
<module>spring-data-neo4j-tx</module>
|
||||
<module>spring-data-neo4j-aspects</module>
|
||||
<module>spring-data-neo4j-cross-store</module>
|
||||
</modules>
|
||||
|
||||
@@ -40,6 +40,10 @@
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-neo4j-aspects</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-neo4j-tx</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-neo4j</artifactId>
|
||||
|
||||
@@ -293,6 +293,11 @@
|
||||
<artifactId>spring-data-neo4j-aspects</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-neo4j-tx</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Logging -->
|
||||
<dependency>
|
||||
@@ -300,12 +305,14 @@
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>${org.slf4j.version}</version>
|
||||
<scope>compile</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>jcl-over-slf4j</artifactId>
|
||||
<version>${org.slf4j.version}</version>
|
||||
<scope>runtime</scope>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
@@ -493,18 +500,6 @@
|
||||
<version>1.6</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.ow2.jotm</groupId>
|
||||
<artifactId>jotm-core</artifactId>
|
||||
<version>2.1.9</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.spec.ee</groupId>
|
||||
<artifactId>ow2-connector-1.5-spec</artifactId>
|
||||
<version>1.0-M1</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
</dependencyManagement>
|
||||
<dependencies>
|
||||
|
||||
176
spring-data-neo4j-tx/pom.xml
Normal file
176
spring-data-neo4j-tx/pom.xml
Normal file
@@ -0,0 +1,176 @@
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-neo4j-parent</artifactId>
|
||||
<version>2.1.0.BUILD-SNAPSHOT</version>
|
||||
<relativePath>../spring-data-neo4j-parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
<artifactId>spring-data-neo4j-tx</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<name>Neo4j Spring XA Transaction Integration</name>
|
||||
<description><![CDATA[Integration of external XA-Transaction-Managers configured in Spring with Neo4j, via the "tx_manager_impl=spring-jta" config setting.
|
||||
]]></description>
|
||||
<url>http://neo4j.org</url>
|
||||
<dependencies>
|
||||
<!-- Spring -->
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-beans</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-tx</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-aspects</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.neo4j</groupId>
|
||||
<artifactId>neo4j-kernel</artifactId>
|
||||
<version>${neo4j.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.neo4j</groupId>
|
||||
<artifactId>neo4j-lucene-index</artifactId>
|
||||
<version>${neo4j.version}</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.neo4j</groupId>
|
||||
<artifactId>neo4j-kernel</artifactId>
|
||||
<version>${neo4j.version}</version>
|
||||
<scope>test</scope>
|
||||
<type>test-jar</type>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.ow2.jotm</groupId>
|
||||
<artifactId>jotm-core</artifactId>
|
||||
<version>2.1.9</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.spec.ee</groupId>
|
||||
<artifactId>ow2-connector-1.5-spec</artifactId>
|
||||
<version>1.0-M1</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjrt</artifactId>
|
||||
<version>${aspectj.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- Logging -->
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>cglib</groupId>
|
||||
<artifactId>cglib</artifactId>
|
||||
<version>2.2</version>
|
||||
</dependency>
|
||||
|
||||
<!-- JPA annotations for spring-aspects compilation which uses @Transactional -->
|
||||
<dependency>
|
||||
<groupId>org.hibernate.javax.persistence</groupId>
|
||||
<artifactId>hibernate-jpa-2.0-api</artifactId>
|
||||
<version>1.0.0.Final</version>
|
||||
<optional>true</optional>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>aspectj-maven-plugin</artifactId>
|
||||
<version>1.2</version>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjrt</artifactId>
|
||||
<version>${aspectj.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.aspectj</groupId>
|
||||
<artifactId>aspectjtools</artifactId>
|
||||
<version>${aspectj.version}</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
<configuration>
|
||||
<!--aspectDirectory>src/main/java</aspectDirectory>
|
||||
<testAspectDirectory>src/test/java</testAspectDirectory-->
|
||||
<!--weaveDependencies>
|
||||
<weaveDependency>
|
||||
<groupId>org.springframework.data</groupId>
|
||||
<artifactId>spring-data-neo4j</artifactId>
|
||||
<type>test-jar</type>
|
||||
</weaveDependency>
|
||||
</weaveDependencies-->
|
||||
<aspectLibraries>
|
||||
<aspectLibrary>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-aspects</artifactId>
|
||||
<!--includes>
|
||||
<include>org.springframework.beans.factory.aspectj.AnnotationBeanConfigurerAspect</include>
|
||||
</includes-->
|
||||
</aspectLibrary>
|
||||
</aspectLibraries>
|
||||
<source>1.6</source>
|
||||
<target>1.6</target>
|
||||
</configuration>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-compile</id>
|
||||
<goals>
|
||||
<goal>compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
<execution>
|
||||
<id>test-compile</id>
|
||||
<goals>
|
||||
<goal>test-compile</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
</plugin>
|
||||
<!-- the eclipse plugin interacts with the aspectj-maven-plugin
|
||||
BUT ONLY if the ajdtVersion config value is set (remove it and it won't) -->
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-eclipse-plugin</artifactId>
|
||||
<version>2.8</version>
|
||||
<configuration>
|
||||
<!-- The ajdtVersion configuration parameter is optional. The valid values are none, 1.4, and 1.5. none indicates that AJDT should not be enabled even though Aspectj is enabled in maven. 1.4 generates the org.eclipse.ajdt.ui.prefs file in the .settings directory. 1.5 (or later) includes the configuration into the .classpath file and is the default value. -->
|
||||
<ajdtVersion>1.5</ajdtVersion>
|
||||
<additionalProjectnatures>
|
||||
<projectnature>org.eclipse.ajdt.ui.ajnature</projectnature>
|
||||
<projectnature>org.eclipse.jdt.core.javanature</projectnature>
|
||||
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
|
||||
</additionalProjectnatures>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
3
spring-data-neo4j-tx/src/META-INF/MANIFEST.MF
Normal file
3
spring-data-neo4j-tx/src/META-INF/MANIFEST.MF
Normal file
@@ -0,0 +1,3 @@
|
||||
Manifest-Version: 1.0
|
||||
Class-Path:
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
package org.springframework.data.neo4j.transaction;
|
||||
|
||||
import org.neo4j.kernel.impl.transaction.AbstractTransactionManager;
|
||||
import org.neo4j.kernel.impl.transaction.XaDataSourceManager;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.beans.factory.annotation.Configurable;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
import org.springframework.transaction.jta.JtaTransactionManager;
|
||||
|
||||
import javax.transaction.*;
|
||||
@@ -30,8 +30,7 @@ import javax.transaction.*;
|
||||
@Configurable
|
||||
class SpringServiceImpl extends AbstractTransactionManager
|
||||
{
|
||||
@Autowired
|
||||
private JtaTransactionManager jtaTransactionManager;
|
||||
private PlatformTransactionManager transactionManager;
|
||||
|
||||
private TransactionManager delegate;
|
||||
|
||||
@@ -41,7 +40,11 @@ class SpringServiceImpl extends AbstractTransactionManager
|
||||
|
||||
@Override
|
||||
public void init() throws Throwable {
|
||||
delegate = jtaTransactionManager.getTransactionManager();
|
||||
if (transactionManager instanceof JtaTransactionManager) {
|
||||
delegate = ((JtaTransactionManager) transactionManager).getTransactionManager();
|
||||
} else {
|
||||
throw new IllegalStateException("Injected transaction manager is not of type JtaTransactionManager but "+ transactionManager.getClass().getName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -108,4 +111,13 @@ class SpringServiceImpl extends AbstractTransactionManager
|
||||
{
|
||||
// Currently a no-op
|
||||
}
|
||||
|
||||
public PlatformTransactionManager getTransactionManager() {
|
||||
return transactionManager;
|
||||
}
|
||||
|
||||
@Autowired
|
||||
public void setTransactionManager(PlatformTransactionManager transactionManager) {
|
||||
this.transactionManager = transactionManager;
|
||||
}
|
||||
}
|
||||
@@ -17,8 +17,8 @@
|
||||
package org.springframework.data.neo4j.transaction;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Before;
|
||||
import org.junit.Ignore;
|
||||
import org.junit.Test;
|
||||
import org.neo4j.graphdb.GraphDatabaseService;
|
||||
import org.neo4j.graphdb.Node;
|
||||
@@ -27,7 +27,6 @@ import org.neo4j.kernel.AbstractGraphDatabase;
|
||||
import org.neo4j.kernel.configuration.Config;
|
||||
import org.objectweb.jotm.Current;
|
||||
import org.springframework.context.support.ClassPathXmlApplicationContext;
|
||||
import org.springframework.data.neo4j.support.node.Neo4jHelper;
|
||||
import org.springframework.transaction.jta.JtaTransactionManager;
|
||||
import org.springframework.transaction.jta.ManagedTransactionAdapter;
|
||||
|
||||
@@ -43,7 +42,6 @@ import static org.junit.Assert.assertNotNull;
|
||||
* @since 21.02.11
|
||||
*/
|
||||
|
||||
@Ignore("TODO")
|
||||
public class JOTMIntegrationTest {
|
||||
private ClassPathXmlApplicationContext ctx;
|
||||
private GraphDatabaseService gds;
|
||||
@@ -52,7 +50,6 @@ public class JOTMIntegrationTest {
|
||||
public void setUp() throws Exception {
|
||||
ctx = new ClassPathXmlApplicationContext("classpath:spring-tx-text-context.xml");
|
||||
gds = ctx.getBean(GraphDatabaseService.class);
|
||||
Neo4jHelper.cleanDb(gds);
|
||||
}
|
||||
|
||||
@After
|
||||
@@ -72,11 +69,11 @@ public class JOTMIntegrationTest {
|
||||
transaction.finish();
|
||||
}
|
||||
Node readBackOutsideOfTx = gds.getNodeById(node.getId());
|
||||
assertEquals(node, readBackOutsideOfTx);
|
||||
Assert.assertEquals(node, readBackOutsideOfTx);
|
||||
try {
|
||||
transaction = gds.beginTx();
|
||||
Node readBackInsideOfTx = gds.getNodeById(node.getId());
|
||||
assertEquals(node, readBackInsideOfTx);
|
||||
Assert.assertEquals(node, readBackInsideOfTx);
|
||||
transaction.success();
|
||||
} finally {
|
||||
transaction.finish();
|
||||
@@ -95,7 +92,7 @@ public class JOTMIntegrationTest {
|
||||
transaction.finish();
|
||||
}
|
||||
Node retrievedNode = gds.index().forNodes("node").get("name", "value").getSingle();
|
||||
assertEquals(node,retrievedNode);
|
||||
Assert.assertEquals(node, retrievedNode);
|
||||
}
|
||||
|
||||
@Test(expected = NotFoundException.class)
|
||||
@@ -115,12 +112,12 @@ public class JOTMIntegrationTest {
|
||||
@Test
|
||||
public void databaseConfiguredWithSpringJtaShouldUseJtaTransactionManager() throws SystemException, NotSupportedException {
|
||||
final Config config = ((AbstractGraphDatabase) gds).getConfig();
|
||||
assertEquals("spring-jta", config.getParams().get(Config.TXMANAGER_IMPLEMENTATION));
|
||||
Assert.assertEquals("spring-jta", config.getParams().get(Config.TXMANAGER_IMPLEMENTATION));
|
||||
|
||||
JtaTransactionManager tm = ctx.getBean("transactionManager", JtaTransactionManager.class);
|
||||
Transaction transaction = tm.createTransaction("jotm", 1000);
|
||||
|
||||
assertEquals(ManagedTransactionAdapter.class, transaction.getClass());
|
||||
Assert.assertEquals(ManagedTransactionAdapter.class, transaction.getClass());
|
||||
assertEquals(Current.class, ((ManagedTransactionAdapter) transaction).getTransactionManager().getClass());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:tx="http://www.springframework.org/schema/tx"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
|
||||
|
||||
<context:annotation-config />
|
||||
<context:spring-configured/>
|
||||
|
||||
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
|
||||
<property name="transactionManager">
|
||||
<bean id="jotm" class="org.springframework.data.neo4j.transaction.JotmFactoryBean"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean class="org.neo4j.test.ImpermanentGraphDatabase" destroy-method="shutdown">
|
||||
<constructor-arg>
|
||||
<map>
|
||||
<entry key="tx_manager_impl" value="spring-jta"/>
|
||||
</map>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
|
||||
</beans>
|
||||
26
spring-data-neo4j-tx/template.mf
Normal file
26
spring-data-neo4j-tx/template.mf
Normal file
@@ -0,0 +1,26 @@
|
||||
Bundle-SymbolicName: org.springframework.data.neo4j.transaction
|
||||
Bundle-Name: Neo4j Spring XA Transaction Integration
|
||||
Bundle-Vendor: SpringSource
|
||||
Bundle-ManifestVersion: 2
|
||||
Import-Template:
|
||||
org.springframework.beans.*;version="[3.0.0, 4.0.0)",
|
||||
org.springframework.context.*;version="[3.0.0, 4.0.0)",
|
||||
org.springframework.core.*;version="[3.0.0, 4.0.0)",
|
||||
org.springframework.stereotype.*;version="[3.0.0, 4.0.0)",
|
||||
org.springframework.transaction.*;version="[3.0.0, 4.0.0)",
|
||||
org.springframework.util.*;version="[3.0.0, 4.0.0)",
|
||||
org.neo4j.*;version="0",
|
||||
org.aspectj.*;version="[1.6.5, 2.0.0)",
|
||||
org.apache.commons.configuration.*;version="0",
|
||||
org.objectweb.jotm.*;version="0",
|
||||
org.apache.lucene.*;version="0",
|
||||
org.slf4j.*;version="0",
|
||||
javax.persistence.*;version="[1.0.0, 3.0.0)";resolution:=optional,
|
||||
javax.transaction.*;version="[1.0.1, 2.0.0)";resolution:=optional,
|
||||
javax.naming.*;version="[1.0.1, 2.0.0)";resolution:=optional
|
||||
Import-Package:
|
||||
sun.reflect;version="0";resolution:=optional,
|
||||
net.sf.cglib.proxy;version="[2.2.0,3.0.0)",
|
||||
net.sf.cglib.core;version="[2.2.0,3.0.0)",
|
||||
net.sf.cglib.reflect;version="[2.2.0,3.0.0)"
|
||||
DynamicImport-Package: *
|
||||
@@ -38,17 +38,6 @@
|
||||
<artifactId>spring-data-commons-core</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.ow2.jotm</groupId>
|
||||
<artifactId>jotm-core</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.spec.ee</groupId>
|
||||
<artifactId>ow2-connector-1.5-spec</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- Logging -->
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
@@ -222,6 +211,7 @@
|
||||
<groupId>org.hibernate.javax.persistence</groupId>
|
||||
<artifactId>hibernate-jpa-2.0-api</artifactId>
|
||||
<version>1.0.0.Final</version>
|
||||
<optional>true</optional>
|
||||
</dependency>
|
||||
|
||||
<!-- For Tests -->
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:aop="http://www.springframework.org/schema/aop"
|
||||
xmlns:context="http://www.springframework.org/schema/context"
|
||||
xmlns:jee="http://www.springframework.org/schema/jee"
|
||||
xmlns:tx="http://www.springframework.org/schema/tx"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:task="http://www.springframework.org/schema/task"
|
||||
xmlns:p="http://www.springframework.org/schema/p"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsd
|
||||
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
|
||||
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
|
||||
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
|
||||
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">
|
||||
|
||||
<context:annotation-config />
|
||||
<context:spring-configured/>
|
||||
|
||||
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
|
||||
<property name="transactionManager">
|
||||
<bean id="jotm" class="org.springframework.data.neo4j.transaction.JotmFactoryBean"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean class="org.neo4j.kernel.EmbeddedGraphDatabase" destroy-method="shutdown">
|
||||
<constructor-arg value="target/test-db"/>
|
||||
<constructor-arg>
|
||||
<map>
|
||||
<entry key="tx_manager_impl" value="spring-jta"/>
|
||||
</map>
|
||||
</constructor-arg>
|
||||
</bean>
|
||||
|
||||
<tx:annotation-driven mode="aspectj" transaction-manager="transactionManager"/>
|
||||
<!--context:load-time-weaver aspectj-weaving="autodetect"/-->
|
||||
</beans>
|
||||
Reference in New Issue
Block a user