簡體   English   中英

ContentModel無法解析為變量

[英]ContentModel cannot be resolved to a variable

我遇到這個錯誤:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    ContentModel cannot be resolved to a variable

    at test2CMIS.Test.main(Test.java:39)" 

而且我不明白它來自哪里,這是我的代碼:

public class Test {

    public static void main(String[] args){
        Test atest = new Test();
        Session session = atest.iniSession();
        AuthenticationService authenticationService=null;
        PersonService personService = null;

        if (authenticationService.authenticationExists("test") == false)
        {
           authenticationService.createAuthentication("test", "changeMe".toCharArray());

           PropertyMap ppOne = new PropertyMap(4);
           ppOne.put(ContentModel.PROP_USERNAME, "test");
           ppOne.put(ContentModel.PROP_FIRSTNAME, "firstName");
           ppOne.put(ContentModel.PROP_LASTNAME, "lastName");
           ppOne.put(ContentModel.PROP_EMAIL, "test"+"@example.com");

           personService.createPerson(ppOne);
        }
    }

我確實導入了:import org.alfresco.model.ContentModel; 還有很多其他庫供我使用。

謝謝。

我正在使用的代碼,在注釋中留下了一些我也嘗試過的東西,以便您可以看到我做了什么:

import java.io.File;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

import org.alfresco.service.cmr.security.*;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;


import java.util.Iterator;

import org.alfresco.repo.jscript.People;
import org.alfresco.repo.security.authentication.AuthenticationException;
import org.alfresco.service.cmr.security.AuthenticationService;
import org.alfresco.service.cmr.security.PersonService;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.PropertyMap;
import org.apache.chemistry.opencmis.client.api.CmisObject;
import org.apache.chemistry.opencmis.client.api.Document;
import org.apache.chemistry.opencmis.client.api.Folder;
import org.apache.chemistry.opencmis.client.api.Session;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.SessionParameter;
import org.apache.chemistry.opencmis.commons.enums.BindingType;
import org.apache.chemistry.opencmis.commons.enums.VersioningState;
import org.apache.chemistry.opencmis.commons.exceptions.CmisContentAlreadyExistsException;
import org.apache.chemistry.opencmis.commons.exceptions.CmisUnauthorizedException;
import org.apache.chemistry.opencmis.client.util.FileUtils;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;

public class Test {

    public static void main(String[] args){
        Test atest = new Test();
        Session session = atest.iniSession();
        AuthenticationService authenticationService=new AuthenticationServiceImpl();
        PersonService personService = new PersonServiceImpl();


        HashMap<QName, Serializable> properties = new HashMap<QName, Serializable>();
        properties.put(ContentModel.PROP_USERNAME, "test");
        properties.put(ContentModel.PROP_FIRSTNAME, "test");
        properties.put(ContentModel.PROP_LASTNAME, "qsdqsd");
        properties.put(ContentModel.PROP_EMAIL, "wshAlors@gmail.com");
        properties.put(ContentModel.PROP_ENABLED, Boolean.valueOf(true));
        properties.put(ContentModel.PROP_ACCOUNT_LOCKED, Boolean.valueOf(false));
        personService.createPerson(properties);

        authenticationService.createAuthentication("test", "changeme".toCharArray());

        authenticationService.setAuthenticationEnabled("test", true);

        authenticationService.getAuthenticationEnabled("Admin");

        //String testAuthen = authenticationService.getCurrentTicket();
        //System.out.println(testAuthen);
        //QName username = QName.createQName("test");
        //Map<QName,Serializable> propertiesUser = new HashMap<QName,Serializable>();
        //propertiesUser.put(ContentModel.PROP_USERNAME,username);
        //propertiesUser.put(ContentModel.PROP_FIRSTNAME,"test");
        //propertiesUser.put(ContentModel.PROP_LASTNAME,"test");
        //propertiesUser.put(ContentModel.PROP_EMAIL, "test@example.com");
        //propertiesUser.put(ContentModel.PROP_PASSWORD,"0000");
        //personService.createPerson(propertiesUser);



        //if (authenticationService.authenticationExists("test") == false)
        //{
        //   authenticationService.createAuthentication("test", "changeMe".toCharArray());

        //   PropertyMap ppOne = new PropertyMap(4);
        //   ppOne.put(ContentModel.PROP_USERNAME, "test");
        //   ppOne.put(ContentModel.PROP_FIRSTNAME, "test");
        //   ppOne.put(ContentModel.PROP_LASTNAME, "test");
        //   ppOne.put(ContentModel.PROP_EMAIL, "test@example.com");
           //ppOne.put(ContentModel.PROP_JOBTITLE, "jobTitle");

        //   personService.createPerson(ppOne);
        //}
    }

    public  Session iniSession() {
        Session session;
        SessionFactoryImpl sf = SessionFactoryImpl.newInstance();
        Map<String, String> parameters = new HashMap<String, String>();
        Scanner reader = new Scanner(System.in);
        System.out.println("Enter your logging : ");
        String log = reader.nextLine();
        System.out.println("Enter your password : ");
        String pass = reader.nextLine();

        parameters.put(SessionParameter.USER, log);
        parameters.put(SessionParameter.PASSWORD, pass);

        parameters.put(SessionParameter.BROWSER_URL, "http://127.0.0.1:8080/alfresco/api/-default-/public/cmis/versions/1.1/browser");
        parameters.put(SessionParameter.BINDING_TYPE, BindingType.BROWSER.value());
        parameters.put(SessionParameter.REPOSITORY_ID, "-default-");

        try{
            session = sf.createSession(parameters);
        }catch(CmisUnauthorizedException cue){
            session = null;
            System.out.println("Wrong logging OR password !");
        }
        return session;
    }

您正在編寫的可運行類與Alfresco運行的進程不同。 從這個意義上講,您的課程“遠程”運行。

由於您的課程正在Alfresco的遠程運行,因此使用CMIS是正確的。 但是CMIS僅允許您對Alfresco中的文檔和文件夾執行創建,讀取,更新和刪除(CRUD)功能。 CMIS不知道如何創建用戶或組。

您的班級將無法實例化AuthenticationService或PersonService。 這些是Alfresco Foundation API的一部分,僅當您在與Alfresco相同的進程中運行(例如在Action,Behavior或Java支持的Web腳本中)時,這些API才起作用。 在這種情況下,您將使用Spring Dependency Injection將這些服務注入Java類。 然后,將您的類放在一個JAR中,該JAR將被部署到Alfresco Web應用程序中,並由與Alfresco相同的類加載器加載。

如果要遠程創建用戶,則應考慮使用Alfresco REST API 然后,您的可運行類可以使用HTTP客戶端調用REST調用來創建人員和組。

感謝你做的一切 ! 多虧您和研究,我才知道該怎么做! 對於其他想知道如何做的人,我將發布如何做以及我以前了解的網站!

因此,您只需要使用Java來操作JSON,因為您的露天人員頁面(127.0.0.1:8080/alfresco/service/api/people)返回JSON對象,並且您可以創建,刪除,搜索...用戶! 再次感謝!

網站:

https://api-explorer.alfresco.com/api-explorer/#/people

http://crunchify.com/json-manipulation-in-java-examples/

代碼:這是用於創建用戶的:

public User createUser(String firstN, String lastN, String email, String pass, String authTicket) throws Exception{
        try{
            String url = "http://127.0.0.1:8080/alfresco/service/api/people?alf_ticket="+authTicket;
            HttpClient httpclient = new HttpClient();
            PostMethod mPost = new PostMethod(url);

            //JSONObject obj = new JSONObject();
            //JSONArray people = obj.getJSONArray("people");
            JSONObject newUser = new JSONObject();
            newUser.put("userName", firstN.toLowerCase().charAt(0)+lastN.toLowerCase());
            newUser.put("enabled",true);
            newUser.put("firstName",firstN);
            newUser.put("lastName", lastN);
            newUser.put("email", email);
            newUser.put("quota",-1);
            newUser.put("emailFreedDisable",false);
            newUser.put("isDeleted",false);
            newUser.put("isAdminAuthority",false);
            newUser.put("password", pass);

            //people.put(newUser);
            //Response response = PostRequest(newUser.toString())); 
            StringRequestEntity requestEntity = new StringRequestEntity(
                    newUser.toString(),
                    "application/json",
                    "UTF-8");
            mPost.setRequestEntity(requestEntity);
            int statusCode2 = httpclient.executeMethod(mPost);

            mPost.releaseConnection();
        }catch(Exception e){
            System.err.println("[ERROR] "+e);
        }
        return new User(firstN, lastN);
    }

而且,如果您想讓所有用戶都在露天上使用:

public ArrayList<User> getAllUsers(String authTicket)
    {
        ArrayList<User> allUsers = new ArrayList<>();
        String lastName, firstName;
        try{
            String url = "http://127.0.0.1:8080/alfresco/service/api/people?alf_ticket="+authTicket;
            HttpClient httpclient = new HttpClient();
            GetMethod mPost = new GetMethod(url);
            int statusCode1 = httpclient.executeMethod(mPost);
            System.out.println("statusLine >>> "+statusCode1+"....."
                    +"\n status line \n"
                    +mPost.getStatusLine()+"\nbody \n"+mPost.getResponseBodyAsString());
            JSONObject obj = new JSONObject(mPost.getResponseBodyAsString());
            JSONArray people = obj.getJSONArray("people");
            int n = people.length();
            for(int i =0 ; i < n ; i++)
            {
                JSONObject peoples = people.getJSONObject(i);
                User u = new User(peoples.getString("firstName"), peoples.getString("lastName"));
                if (!allUsers.contains(u)){
                    allUsers.add(u);
                }
            }

        }catch(Exception e){
            System.err.println("[ERROR] "+e);
        }

        return(allUsers);

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM