cloudstore-memoizeit

added memoizeit cache

6/30/2019 1:58:09 AM

Details

docker-compose.yml 11(+2 -9)

diff --git a/docker-compose.yml b/docker-compose.yml
index 7044a5f..2340e0f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -10,15 +10,8 @@ services:
     command: bash -c 'while !</dev/tcp/database/3306; do sleep 5; done; bash run.sh'
     environment:
       - JAVA_OPTS=${JAVA_OPTS:-"-Xms4096m -Xmx6124m"}
-      - TRACER_ENABLE=${TRACER_ENABLE:-true}
-      - TRACER_MINIMUM_EXECUTION_TIME=${TRACER_MINIMUM_EXECUTION_TIME:-1}
-      - TRACER_SERIALISE_INTERNALS=false
-      - TRACER_VERBOSE=true
-      - TRACER_TRACES=/caching-approaches-comparison/applications/traces/cloudstore
-      - TRACER_LOG=/caching-approaches-comparison/applications/output/cloudstore-tracer.log
-      - TRACER_BLACKLIST=/caching-approaches-comparison/applications/uncached/cloudstore/blacklist
-      - TRACER_IGNORED_PACKAGES=/caching-approaches-comparison/applications/uncached/cloudstore/ignored
-      - TRACER_WHITELIST=/caching-approaches-comparison/applications/uncached/cloudstore/whitelist
+      - CACHE_EVENTS=${CACHE_EVENTS:-/caching-approaches-comparison/applications/output/cloudstore-memoizeit-cache}
+      - CACHE_REGISTER_SIZE=false
     volumes:
       - application:/application
       - /root/.m2:/root/.m2

pom.xml 56(+4 -52)

diff --git a/pom.xml b/pom.xml
index 649e568..8c4cd26 100644
--- a/pom.xml
+++ b/pom.xml
@@ -187,62 +187,14 @@
 		</dependency>
 
         <dependency>
-            <groupId>br.ufrgs.inf.prosoft.applicationtracer</groupId>
-            <artifactId>ApplicationTracer</artifactId>
+            <groupId>br.ufrgs.inf.prosoft.cache</groupId>
+            <artifactId>Cache</artifactId>
             <version>1.0</version>
         </dependency>
 
 	</dependencies>
 	<build>
 		<plugins>
-
-			<plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>aspectj-maven-plugin</artifactId>
-                <version>1.11</version>
-                <configuration>
-                    <showWeaveInfo>false</showWeaveInfo>
-                    <complianceLevel>1.8</complianceLevel>
-                    <source>1.6</source>
-                    <target>1.6</target>
-                    <Xlint>ignore</Xlint>
-                    <encoding>UTF-8</encoding>
-                    <verbose>false</verbose>
-                    <forceAjcCompile>true</forceAjcCompile>
-                    <sources/>
-                    <weaveDirectories>
-                        <weaveDirectory>${project.build.directory}/classes</weaveDirectory>
-                    </weaveDirectories>
-                    <aspectLibraries>
-                        <aspectLibrary>
-                            <groupId>br.ufrgs.inf.prosoft.applicationtracer</groupId>
-                            <artifactId>ApplicationTracer</artifactId>
-                        </aspectLibrary>
-                    </aspectLibraries>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>process-classes</phase>
-                        <goals>
-                            <goal>compile</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <dependencies>
-                    <dependency>
-                        <groupId>org.aspectj</groupId>
-                        <artifactId>aspectjrt</artifactId>
-                        <version>1.9.1</version>
-                    </dependency>
-                    <dependency>
-                        <groupId>org.aspectj</groupId>
-                        <artifactId>aspectjtools</artifactId>
-                        <version>1.9.1</version>
-                    </dependency>
-                </dependencies>
-            </plugin>
-
-
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-resources-plugin</artifactId>
@@ -341,8 +293,8 @@
 				<artifactId>maven-compiler-plugin</artifactId>
 				<version>2.5.1</version>
 				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
+					<source>1.8</source>
+					<target>1.8</target>
 					<!-- <compilerArgument>-Xlint:all</compilerArgument> -->
 					<!-- <showWarnings>true</showWarnings> -->
 					<!-- <showDeprecation>true</showDeprecation> -->
diff --git a/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java b/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java
index db1dfe5..210c680 100755
--- a/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java
+++ b/src/main/java/eu/cloudscale/showcase/db/dao/hibernate/impl/ShoppingCartDaoImpl.java
@@ -12,6 +12,8 @@ package eu.cloudscale.showcase.db.dao.hibernate.impl;
 import java.util.Date;
 import java.util.List;
 
+import br.ufrgs.inf.prosoft.cache.SingleCache;
+
 import org.hibernate.Hibernate;
 import org.hibernate.Query;
 import org.hibernate.Session;
@@ -36,29 +38,33 @@ public class ShoppingCartDaoImpl extends DaoImpl<IShoppingCart> implements IShop
 		super(sessionFactory);
 	}
 
+public static SingleCache<Integer, IShoppingCart> findByIdCache = new SingleCache<>("ShoppingCartDaoImpl.findById");
+
     @SuppressWarnings( "rawtypes" )
     @Override
 //    @Transactional(readOnly=true)
     public IShoppingCart findById(Integer shoppingId)
     {
-    	Session session = getCurrentSession();
-	    String hql = "SELECT SC FROM ShoppingCart as SC WHERE SC.scId = :scId";
-	    
-	    Query query = session.createQuery(hql);
-	    query.setParameter( "scId", shoppingId );
-	    
-	   
-    	List res = query.list();
-	    
-	    if( res.isEmpty() )
-	    {
-//	    	System.out.println("results are empty! " + query.getQueryString());
-	    	return null;
-	    }
-	    
-	    ShoppingCart sc = (ShoppingCart) res.get( 0 );
-	    Hibernate.initialize( sc.getShoppingCartLines() );
-	    return sc;
+		return findByIdCache.computeIfAbsent(shoppingId, () -> {
+	    	Session session = getCurrentSession();
+		    String hql = "SELECT SC FROM ShoppingCart as SC WHERE SC.scId = :scId";
+		    
+		    Query query = session.createQuery(hql);
+		    query.setParameter( "scId", shoppingId );
+		    
+		   
+	    	List res = query.list();
+		    
+		    if( res.isEmpty() )
+		    {
+	//	    	System.out.println("results are empty! " + query.getQueryString());
+		    	return null;
+		    }
+		    
+		    ShoppingCart sc = (ShoppingCart) res.get( 0 );
+		    Hibernate.initialize( sc.getShoppingCartLines() );
+		    return sc;
+		}, 86400000);
     }
 
 	@SuppressWarnings( "unchecked" )
diff --git a/src/main/java/eu/cloudscale/showcase/db/services/AService.java b/src/main/java/eu/cloudscale/showcase/db/services/AService.java
index 46672f1..a2d64fe 100755
--- a/src/main/java/eu/cloudscale/showcase/db/services/AService.java
+++ b/src/main/java/eu/cloudscale/showcase/db/services/AService.java
@@ -20,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 // import org.springframework.cache.annotation.Cacheable;
 import org.springframework.transaction.annotation.Transactional;
 
+import br.ufrgs.inf.prosoft.cache.SingleCache;
+
 import eu.cloudscale.showcase.db.BuyConfirmResult;
 import eu.cloudscale.showcase.db.common.ContextHelper;
 import eu.cloudscale.showcase.db.dao.IAddressDao;
@@ -533,10 +535,14 @@ public abstract class AService implements IService
 	    customerDao.shrani( customer );
 	}
 	
+public static SingleCache<Integer, IShoppingCart> findShoppingCartByIdCache = new SingleCache<>("AService.findShoppingCartById");
+
 	@Override
 	public IShoppingCart findShoppingCartById(Integer shoppingId)
 	{
-		return shoppingCartDao.findById( shoppingId );
+		return findShoppingCartByIdCache.computeIfAbsent(shoppingId, () -> {
+			return shoppingCartDao.findById( shoppingId );
+		}, 86400000);
 	}
 	
 	@Override