You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ace.apache.org by ma...@apache.org on 2010/12/06 14:52:52 UTC
svn commit: r1042644 - in
/incubator/ace/trunk/ace-resourceprocessor-useradmin: ./
src/main/java/org/apache/ace/resourceprocessor/useradmin/
src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/
Author: marrs
Date: Mon Dec 6 13:52:51 2010
New Revision: 1042644
URL: http://svn.apache.org/viewvc?rev=1042644&view=rev
Log:
Various bugfixes to get this processor running again.
Modified:
incubator/ace/trunk/ace-resourceprocessor-useradmin/osgi.bnd
incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/UserAdminConfigurator.java
incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/Processor.java
incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/ResourceStore.java
incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/UserAdminStore.java
Modified: incubator/ace/trunk/ace-resourceprocessor-useradmin/osgi.bnd
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-resourceprocessor-useradmin/osgi.bnd?rev=1042644&r1=1042643&r2=1042644&view=diff
==============================================================================
--- incubator/ace/trunk/ace-resourceprocessor-useradmin/osgi.bnd (original)
+++ incubator/ace/trunk/ace-resourceprocessor-useradmin/osgi.bnd Mon Dec 6 13:52:51 2010
@@ -1,11 +1,9 @@
-Bundle-Version>:\
- ${pom.version}
+Bundle-Version>: ${pom.version}
-Bundle-SymbolicName:\
- ${bundle.symbolicName}
+Bundle-SymbolicName: ${bundle.symbolicName}
-Export-Package:\
- ${bundle.namespace}; version="${pom.version}"
+Export-Package: ${bundle.namespace}; version="${pom.version}"
-Bundle-Activator: \
- ${bundle.namespace}.impl.Activator
\ No newline at end of file
+Bundle-Activator: ${bundle.namespace}.impl.Activator
+
+Deployment-ProvidesResourceProcessor: org.apache.ace.resourceprocessor.useradmin
\ No newline at end of file
Modified: incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/UserAdminConfigurator.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/UserAdminConfigurator.java?rev=1042644&r1=1042643&r2=1042644&view=diff
==============================================================================
--- incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/UserAdminConfigurator.java (original)
+++ incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/UserAdminConfigurator.java Mon Dec 6 13:52:51 2010
@@ -37,7 +37,7 @@ import org.w3c.dom.Document;
* <user name="user1">
* <properties>
* <realname type="String">Mr. U. One</realname>
- * <address>1 Infinite Loop</realname>
+ * <address>1 Infinite Loop</address>
* </properties>
* <credentials>
* <password type="byte[]">secret</password>
Modified: incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/Processor.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/Processor.java?rev=1042644&r1=1042643&r2=1042644&view=diff
==============================================================================
--- incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/Processor.java (original)
+++ incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/Processor.java Mon Dec 6 13:52:51 2010
@@ -41,7 +41,7 @@ public class Processor implements Resour
private List<String> m_toInstall;
private List<String> m_toRemove;
- private ResourceStore m_resourceStore;
+ private final ResourceStore m_resourceStore;
Processor(ResourceStore store) {
m_resourceStore = store;
@@ -121,6 +121,8 @@ public class Processor implements Resour
public void commit() {
ensureSession();
+ m_resourceStore.begin();
+
while (!m_toInstall.isEmpty()) {
try {
m_resourceStore.install(m_toInstall.remove(0));
@@ -138,6 +140,7 @@ public class Processor implements Resour
}
}
+ m_resourceStore.end();
endSession();
}
Modified: incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/ResourceStore.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/ResourceStore.java?rev=1042644&r1=1042643&r2=1042644&view=diff
==============================================================================
--- incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/ResourceStore.java (original)
+++ incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/ResourceStore.java Mon Dec 6 13:52:51 2010
@@ -71,9 +71,10 @@ abstract class ResourceStore
/**
* Adds a resource to persistent storage and handles the administration.
- * @param deploymentPackageName The name of a deployment package.
- * @param name The name of the resource.
- * @param stream A stream form which the resource with <code>name</code> can be read.
+ *
+ * @param deploymentPackageName the name of a deployment package
+ * @param name the name of the resource
+ * @param stream a stream from which the resource with <code>name</code> can be read
*/
public void addResource(String deploymentPackageName, String name, InputStream stream) throws IOException, ResourceProcessorException {
synchronized (m_resources) {
@@ -122,25 +123,41 @@ abstract class ResourceStore
/**
* Checks the validity of a resource.
- * @param resource A stream containing the resource
- * @throws Exception Any exception can be thrown from this method, indicating 'what is wrong' with the resource.
+ *
+ * @param resource a stream containing the resource
+ * @throws Exception when something is wrong with the resource
*/
public abstract void validate(InputStream resource) throws Exception;
+
/**
- * Installs a given resource
- * @param resourceName The name of the resource.
+ * Marks the start of a deployment process.
+ */
+ public abstract void begin();
+
+ /**
+ * Marks the end of a deployment process.
+ */
+ public abstract void end();
+
+ /**
+ * Installs a given resource.
+ *
+ * @param resourceName the name of the resource
*/
public abstract void install(String resourceName) throws IOException;
+
/**
- * Uninstalls a given resource
- * @param resourceName The name of the resource.
+ * Uninstalls a given resource.
+ *
+ * @param resourceName the name of the resource
*/
public abstract void uninstall(String resourceName) throws IOException;
/**
* Gets the names of all driver bundles that belong to a given deployment package.
- * @param deploymentPackageName The name of a deployment package.
- * @return A list of the names of all driver bundles that belong to <code>deploymentPackageName</code>.
+ *
+ * @param deploymentPackageName the name of a deployment package
+ * @return a list of the names of all driver bundles that belong to <code>deploymentPackageName</code>
*/
public List<String> getResources(String deploymentPackageName) {
synchronized (m_resources) {
@@ -156,9 +173,10 @@ abstract class ResourceStore
/**
* Gets the name of the deployment package to which a given resource belongs.
- * @param resourceName The name of a resource.
- * @return The name of the deployment package to which <code>resourceName</code>
- * belongs, or <code>null</code> if this resource is unknown.
+ *
+ * @param resourceName the name of a resource
+ * @return the name of the deployment package to which <code>resourceName</code>
+ * belongs, or <code>null</code> if this resource is unknown
*/
public String getDeploymentPackage(String resourceName) {
return m_resources.get(resourceName);
@@ -166,16 +184,14 @@ abstract class ResourceStore
/**
* Gets the stream belonging to a given resource.
- * @param name The name of a the resource.
+ *
+ * @param name the name of a the resource
* @return an InputStream providing access to the named resource. It is the caller's
* task to close it.
- * @throws java.io.IOException Thrown when an exception occurs accessing the resource.
+ * @throws java.io.IOException when an exception occurs accessing the resource
*/
protected InputStream getResource(String name) throws IOException {
File resource = new File(new File(m_context.getDataFile(TEMP_DIR), m_resources.get(name)), name);
-
return new FileInputStream(resource);
}
-
-
-}
\ No newline at end of file
+}
Modified: incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/UserAdminStore.java
URL: http://svn.apache.org/viewvc/incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/UserAdminStore.java?rev=1042644&r1=1042643&r2=1042644&view=diff
==============================================================================
--- incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/UserAdminStore.java (original)
+++ incubator/ace/trunk/ace-resourceprocessor-useradmin/src/main/java/org/apache/ace/resourceprocessor/useradmin/impl/UserAdminStore.java Mon Dec 6 13:52:51 2010
@@ -25,7 +25,6 @@ import java.util.Dictionary;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
-import java.util.ListIterator;
import java.util.Map;
import java.util.Map.Entry;
@@ -56,10 +55,24 @@ public class UserAdminStore extends Reso
private Object m_installListLock = new Object();
private boolean m_clear;
+ private List<String> m_installedUsers;
+
UserAdminStore(BundleContext context) {
super(context);
}
+
+
+ @Override
+ public void begin() {
+ m_installedUsers = new ArrayList<String>();
+ }
+
+ @Override
+ public void end() {
+ m_installedUsers = new ArrayList<String>();
+ }
+
@Override
public void install(String resourceName) throws IOException {
InputStream input = getResource(resourceName);
@@ -95,7 +108,9 @@ public class UserAdminStore extends Reso
m_toRemove.clear();
installRoles(doc);
m_clear = true;
+ begin();
updateUserAdmin();
+ end();
}
public void setUsers(InputStream input) throws IOException {
@@ -122,12 +137,7 @@ public class UserAdminStore extends Reso
*/
private void removeRoles(Document doc) {
synchronized (m_installListLock) {
- // do this backwards from the order in the file
- List<ProcessRole> roles = getRoles(doc);
- ListIterator<ProcessRole> i = roles.listIterator(roles.size());
- for (ProcessRole role = i.previous(); i.hasPrevious(); i.previous()) {
- m_toRemove.add(role);
- }
+ m_toRemove.addAll(getRoles(doc));
}
}
@@ -142,13 +152,10 @@ public class UserAdminStore extends Reso
return;
}
- List<String> updated = new ArrayList<String>();
-
// install or update all roles we have to update
while (!m_toInstall.isEmpty()) {
ProcessRole role = m_toInstall.remove(0);
updateRole(role);
- updated.add(role.getName());
}
// remove all roles that have not been updated if this install
@@ -162,7 +169,7 @@ public class UserAdminStore extends Reso
// Will not happen, since we pass in a null filter.
}
for (Role r : roles) {
- if (!updated.contains(r.getName())) {
+ if (!m_installedUsers.contains(r.getName())) {
m_userAdmin.removeRole(r.getName());
}
}
@@ -172,8 +179,12 @@ public class UserAdminStore extends Reso
// removed
if (!m_clear) {
while (!m_toRemove.isEmpty()) {
- ProcessRole role = m_toRemove.remove(m_toRemove.size());
- m_userAdmin.removeRole(role.getName());
+ //do it tail to head
+ ProcessRole role = m_toRemove.remove( m_toRemove.size() - 1 );
+
+ if (!m_installedUsers.contains(role.getName())) {
+ m_userAdmin.removeRole(role.getName());
+ }
}
}
@@ -188,6 +199,8 @@ public class UserAdminStore extends Reso
*/
@SuppressWarnings("unchecked")
private void updateRole(ProcessRole role) {
+ m_installedUsers.add(role.getName());
+
Role r = m_userAdmin.getRole(role.getName());
if (r == null) {
r = m_userAdmin.createRole(role.getName(), role.getType());
@@ -273,7 +286,9 @@ public class UserAdminStore extends Reso
throw new IllegalStateException("UserAdminStore is intended to work with a single user admin.");
}
m_userAdmin = admin;
+ begin();
updateUserAdmin();
+ end();
}
}