Skip to content
This repository has been archived by the owner on Jan 31, 2023. It is now read-only.

DHX-17 - Reduce memory consumption in case of large attachments #22

Merged
merged 18 commits into from
Sep 20, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,6 @@
/target/
/.project
/.gitignore
.idea
logs
*.iml
15 changes: 14 additions & 1 deletion dhx-adapter-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>ee.ria.dhx</groupId>
<artifactId>DHX-adapter</artifactId>
<version>1.0.4</version>
<version>${revision}</version>
</parent>
<artifactId>dhx-adapter-core</artifactId>
<name>dhx-adapter-core</name>
Expand Down Expand Up @@ -45,6 +45,19 @@
<clearOutputDir>false</clearOutputDir>
</configuration>
</plugin>

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns="http://www.riik.ee/schemas/deccontainer/vers_2_1/" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.riik.ee/schemas/deccontainer/vers_2_1/">
<xs:element name="DecContainer">
<xs:complexType>
Expand Down Expand Up @@ -643,7 +644,7 @@
</xs:simpleType>
<xs:simpleType name="PhoneType">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9 +()-]*"/>
<xs:pattern value="[0-9 +()\-]*"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="PostalCodeType">
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package ee.ria.dhx.mock;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.BeanInitializationException;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Primary;
import org.springframework.core.type.StandardMethodMetadata;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;

import java.lang.reflect.Method;
import java.util.Map;
import java.util.Map.Entry;

public class MockStrategiesHelper extends org.springframework.ws.test.support.MockStrategiesHelper {
private static final Log logger = LogFactory.getLog(MockStrategiesHelper.class);
private final ConfigurableListableBeanFactory beanFactory;
private ApplicationContext applicationContext;

public MockStrategiesHelper(ApplicationContext applicationContext) {
super(applicationContext);
this.applicationContext = applicationContext;
this.beanFactory = ((ConfigurableApplicationContext) this.applicationContext).getBeanFactory();
}

@Override
public <T> T getStrategy(Class<T> type) {
Assert.notNull(type, "'type' must not be null");
Map<String, T> map = this.applicationContext.getBeansOfType(type);
if (map.isEmpty()) {
return null;
} else if (map.size() == 1) {
Entry<String, T> entry = (Entry)map.entrySet().iterator().next();
if (logger.isDebugEnabled()) {
logger.debug("Using " + ClassUtils.getShortName(type) + " [" + (String)entry.getKey() + "]");
}

return entry.getValue();
}

if (this.applicationContext instanceof ConfigurableApplicationContext) {
String[] beanNamesOfType = this.applicationContext.getBeanNamesForType(type);
for (String beanName : beanNamesOfType) {
if (isPrimaryBean(beanName)) {
return (T) this.applicationContext.getBean(beanName);
}
}
}

throw new BeanInitializationException("Could not find exactly 1 " + ClassUtils.getShortName(type) + " in application context");
}

private boolean isPrimaryBean(String beanName) {
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
if (beanDefinition.getSource() instanceof StandardMethodMetadata) {
StandardMethodMetadata metadata = (StandardMethodMetadata) beanDefinition.getSource();
Method method = metadata.getIntrospectedMethod();
return method.isAnnotationPresent(Primary.class);
}
return false;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package ee.ria.dhx.mock;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.util.Assert;
import org.springframework.ws.WebServiceMessage;
import org.springframework.ws.WebServiceMessageFactory;
import org.springframework.ws.context.DefaultMessageContext;
import org.springframework.ws.context.MessageContext;
import org.springframework.ws.soap.axiom.AxiomSoapMessageFactory;
import org.springframework.ws.soap.server.SoapMessageDispatcher;
import org.springframework.ws.test.server.RequestCreator;
import org.springframework.ws.test.server.ResponseActions;
import org.springframework.ws.test.server.ResponseMatcher;
import org.springframework.ws.test.support.AssertionErrors;
import org.springframework.ws.transport.WebServiceMessageReceiver;

import java.io.IOException;

public class MockWebServiceClient {
private static final Log logger = LogFactory.getLog(MockWebServiceClient.class);
private final WebServiceMessageReceiver messageReceiver;
private final WebServiceMessageFactory messageFactory;

private MockWebServiceClient(WebServiceMessageReceiver messageReceiver, WebServiceMessageFactory messageFactory) {
Assert.notNull(messageReceiver, "'messageReceiver' must not be null");
Assert.notNull(messageFactory, "'messageFactory' must not be null");
this.messageReceiver = messageReceiver;
this.messageFactory = messageFactory;
}

public static MockWebServiceClient createClient(WebServiceMessageReceiver messageReceiver, WebServiceMessageFactory messageFactory) {
return new MockWebServiceClient(messageReceiver, messageFactory);
}

public static MockWebServiceClient createClient(ApplicationContext applicationContext) {
Assert.notNull(applicationContext, "'applicationContext' must not be null");
MockStrategiesHelper strategiesHelper = new MockStrategiesHelper(applicationContext);
WebServiceMessageReceiver messageReceiver = (WebServiceMessageReceiver)strategiesHelper.getStrategy(WebServiceMessageReceiver.class, SoapMessageDispatcher.class);
WebServiceMessageFactory messageFactory = (WebServiceMessageFactory)strategiesHelper.getStrategy(WebServiceMessageFactory.class, AxiomSoapMessageFactory.class);
return new MockWebServiceClient(messageReceiver, messageFactory);
}

public ResponseActions sendRequest(RequestCreator requestCreator) {
Assert.notNull(requestCreator, "'requestCreator' must not be null");

try {
WebServiceMessage request = requestCreator.createRequest(this.messageFactory);
MessageContext messageContext = new DefaultMessageContext(request, this.messageFactory);
this.messageReceiver.receive(messageContext);
return new MockWebServiceClient.MockWebServiceClientResponseActions(messageContext);
} catch (Exception var4) {
logger.error("Could not send request", var4);
AssertionErrors.fail(var4.getMessage());
return null;
}
}

private static class MockWebServiceClientResponseActions implements ResponseActions {
private final MessageContext messageContext;

private MockWebServiceClientResponseActions(MessageContext messageContext) {
Assert.notNull(messageContext, "'messageContext' must not be null");
this.messageContext = messageContext;
}

public ResponseActions andExpect(ResponseMatcher responseMatcher) {
WebServiceMessage request = this.messageContext.getRequest();
WebServiceMessage response = this.messageContext.getResponse();
if (response == null) {
AssertionErrors.fail("No response received");
return null;
} else {
try {
responseMatcher.match(request, response);
return this;
} catch (IOException var5) {
MockWebServiceClient.logger.error("Could not match request", var5);
AssertionErrors.fail(var5.getMessage());
return null;
}
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package ee.ria.dhx.types;

import ee.ria.dhx.types.DhxOrganisation;

import org.junit.Test;

import static org.junit.Assert.*;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import static org.junit.Assert.assertTrue;

import ee.ria.dhx.exception.DhxException;
import ee.ria.dhx.util.FileUtil;

import org.junit.Rule;
import org.junit.Test;
Expand All @@ -25,10 +24,6 @@
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.mail.util.ByteArrayDataSource;

public class FileUtilTest {

@Rule
Expand Down
12 changes: 11 additions & 1 deletion dhx-adapter-server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<parent>
<groupId>ee.ria.dhx</groupId>
<artifactId>DHX-adapter</artifactId>
<version>1.0.4</version>
<version>${revision}</version>
</parent>
<artifactId>dhx-adapter-server</artifactId>
<name>dhx-adapter-server</name>
Expand Down Expand Up @@ -80,6 +80,16 @@
<artifactId>commons-codec</artifactId>
</dependency>

<!-- Test dependencies -->

<dependency>
<groupId>ee.ria.dhx</groupId>
<artifactId>dhx-adapter-core</artifactId>
<version>${project.parent.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>

</dependencies>
<build>
<finalName>${packageName}</finalName>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import lombok.extern.slf4j.Slf4j;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
Expand All @@ -21,11 +20,16 @@
*/
@SpringBootApplication
@EnableScheduling
@EnableAutoConfiguration
@EnableWebMvc
@ComponentScan(basePackages = "ee.ria.dhx.ws.config,ee.ria.dhx.ws.schedule,"
+ "ee.ria.dhx.ws.service.impl,ee.ria.dhx.server.service,ee.ria.dhx.server.config"
+ ",ee.ria.dhx.server.persistence.*,ee.ria.dhx.server.scheduler,ee.ria.dhx.ws")
@ComponentScan(basePackages = {
"ee.ria.dhx.server.config",
"ee.ria.dhx.server.service",
"ee.ria.dhx.server.persistence.*",
"ee.ria.dhx.server.scheduler",
"ee.ria.dhx.ws.config",
"ee.ria.dhx.ws.schedule",
"ee.ria.dhx.ws.service.impl"
})
@EnableAsync
@PropertySource("classpath:dhx-application.properties")
@Slf4j
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import ee.ria.dhx.exception.DhxException;
import ee.ria.dhx.exception.DhxExceptionEnum;

import lombok.Setter;
import lombok.extern.slf4j.Slf4j;

import org.springframework.beans.factory.annotation.Value;
Expand Down
Loading